<template>
  <div class="import-box">
    <!-- onSuccess:封装的组件提供的属性，通过回调函数的参数接收上传后的Excel表格数据 -->
    <UploadExcel :on-success="successFn" />
  </div>
</template>

<script>
import { importBatch } from '@/api/employees'
export default {
  methods: {
    async successFn(data) {
      const result = data.results
      // 插件导入Excel解析出来的数据，字段名是中文，但是后端需要的字段名是英文名
      // 因此，这里我们需要先将数据，转换为后端需要数据格式
      const res = result.map(item => {
        return this.ZhToEn(item)
      })
      console.log(16, res)
      // 调用接口 实现批量导入
      await importBatch(res)
      // 跳转到员工了列表
      this.$router.back()
    },
    ZhToEn(item) {
      const obj = {}
      //   for (const key in item) {
      //     if (key === '入职日期') {
      //       obj.timeOfEntry = item[key]
      //     }
      //     if (key === '姓名') {
      //       obj.username = item[key]
      //     }
      //   }
      const dic = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }
      for (const key in item) {
        const enAttr = dic[key]
        if (enAttr === 'timeOfEntry' || enAttr === 'correctionTime') {
        // 转换日期格式
          obj[enAttr] = this.formatExcelDate(item[key])
        } else {
          obj[enAttr] = item[key]
        }
      }
      return obj
    },
    /**
 * 格式化Excel表中存储的年月日日期
 * @param {number} num - excel存储的数字
 * @param {string} [format = '-'] - 年月日的间隔符，默认为'-'
 * @returns {string} 格式化后的日期
 */
    formatExcelDate(num, format = '-') {
      if (!/^\d+$/.test(num)) return
      num = parseInt(num)
      let millisecond = 0 // 转化后的毫秒数
      if (num > 60) { // 对大于60的日期进行减1处理
        millisecond = (num - 25568 - 1) * 3600 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 3600 * 24 * 1000
      }
      const date = new Date(millisecond) // 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const m = date.getMonth() + 1
      const mm = m >= 10 ? m : '0' + m
      const d = date.getDate()
      const dd = d >= 10 ? d : '0' + d
      return yy + format + mm + format + dd // 返回格式化后的日期
    }
  }
}
</script>

<style lang="scss" scoped>
.import-box{
    padding: 100px;
}
</style>
